<?php
class ProjectsController extends AppController {

	var $name = 'Projects';

	function index() {
		$this->Project->recursive = 0;
		if(!empty($this->data)){
			$set_year = '';
			$set_category ='';
			$set_teacher = '';
			if(!empty($this->data['project_year'])){
				$set_year = $this->data['project_year'];
				$this->set('set_year',$set_year);
			}
			//1 Lĩnh vực 	=> Không được chọn
			//  Giáo viên 	=> Không được chọn
			if(empty($this->data['project_category']) && empty($this->data['project_teacher'])){
				$this->Session->setFlash(__('Hãy chọn một lĩnh vực / Giáo viên để xem thông tin', true));
				$this->redirect(array('action' => 'index'));
			}
			//1 Lĩnh vực 	=> Được chọn
			//  Giáo viên 	=> Không được chọn
			else if(!empty($this->data['project_category']) && empty($this->data['project_teacher'])){
				$this->paginate['conditions'] = array(
					'Project.project_year_id'=>$set_year,
					'Project.project_category_id'=>$this->data['project_category']);
				//Set choose option
				$this->set('set_year',$set_year);
				$this->set('set_category',$this->data['project_category']);
				$this->set('set_teacher',$set_teacher);
				$this->Session->setFlash(__('Xem thông tin theo lĩnh vực đăng ký', true));
			}
			//1 Lĩnh vực 	=> Không được chọn
			//  Giáo viên 	=> Được chọn
			else if(empty($this->data['project_category']) && !empty($this->data['project_teacher'])){
				$this->paginate['conditions'] = array(
					'ProjectAssign.project_year_id'=>$set_year,
					'ProjectAssign.user_id'=>$this->data['project_teacher']);
				//Set choose option
				$this->set('set_year',$set_year);
				$this->set('set_category',$set_category);
				$this->set('set_teacher',$this->data['project_teacher']);
				$this->Session->setFlash(__('Xem thông tin theo Giáo viên hướng dẫn', true));
			}
			else if(!empty($this->data['project_category']) && !empty($this->data['project_teacher'])){
				$this->paginate['conditions'] = array(
					'Project.project_year_id'=>$set_year,
					'Project.project_category_id'=>$this->data['project_category'],
					'Project.user_id'=>$this->data['project_teacher']);
				//Set choose option
				$this->set('set_year',$set_year);
				$this->set('set_category',$this->data['project_category']);
				$this->set('set_teacher',$this->data['project_teacher']);
				$this->Session->setFlash(__('Xem thông tin theo Lĩnh vực và Giáo viên hướng dẫn', true));
			}
		//Lấy các thông tin sinh viên thực hiện đề tài của 1 năm cụ thể nào đó

		}
		//Nếu list index
		else{
			$get_project_active = $this->Project->ProjectYear->find('all',array('conditions'=>array('ProjectYear.active'=>1)));
			$get_one_ProjectCategory = $this->Project->ProjectCategory->find('first',array('order'=>array('ProjectCategory.created asc')));
			$this->paginate['conditions'] = array(
				'Project.project_year_id'=>$get_project_active[0]['ProjectYear']['id'],
				'Project.project_category_id'=>$get_one_ProjectCategory['ProjectCategory']['id']);
			$this->set('set_category',$get_one_ProjectCategory['ProjectCategory']['id']);
			$this->set('set_year',$get_project_active[0]['ProjectYear']['id']);
		}
		//Get thông tin 
		$this->set('projects', $this->paginate());
		$this->set('set_project_year',$this->Project->ProjectYear->find('list'));
		$this->set('set_teachers', $this->Project->User->find('list',array('conditions'=>array('User.group_id'=>2))));
		$this->set('set_project_category',$this->Project->ProjectCategory->find('list'));
		$this->set('set_students', $this->Project->User->find('list',array('conditions'=>array('User.group_id'=>1))));
		
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid project', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('project', $this->Project->read(null, $id));
	}

	function add() {
		if(!isset($_SESSION['Auth']['User']['id'])){
			$this->Session->setFlash(__('Hãy đăng nhập để tiếp tục',true));
			$this->redirect(array('controller'=>'users','action'=>'logout'));
		}
		//Đã đăng nhập
		if (!empty($this->data)) {
			$this->Project->create();	
			$isStudent = '';
			$name_student = '';
			//Người đăng nhập là Giáo vụ khoa
			if($_SESSION['Auth']['User']['group_id']=='3'){
				//Người đăng nhập là Giáo vụ khoa
				$isStudent = $this->data['Project']['isStudent']; 
				$get_projectYears = $this->Project->User->find('all',array(
					'conditions'	=>array(
						'User.id'=>$isStudent),
					'fields'		=>array(
						'User.id',
						'User.name')
					));
				if(!empty($get_projectYears))
					$name_student = $get_projectYears[0]['User']['name'];
			}
			//Người đăng nhập là sinh viên
			else if($_SESSION['Auth']['User']['group_id']=='1'){
				$isStudent = $this->data['Project']['isStudent']= $_SESSION['Auth']['User']['id'];
				$name_student = $_SESSION['Auth']['User']['name'];
			}
			else{
				$this->Session->setFlash(__('Nhóm sử dụng này không được phép đăng ký đề tài. Liên hệ với giáo vụ khoa',true));
				$this->redirect(array('action'=>'index'));
			
			}
			
			//Kiểm tra sinh viên này đã đăng ký trong năm này chưa chưa
			// Điều kiện: project_year, isStudent
			$get_student_registry = $this->Project->find('all',array('conditions'=>array('Project.project_year_id'=>$this->data['Project']['project_year_id'],'Project.isStudent'=>$this->data['Project']['isStudent'])));
			if(count($get_student_registry)>0){//>0 đã đăng ký
				$get_projectYears = $this->Project->ProjectYear->find('all',array('conditions'=>array('ProjectYear.active'=>'1')));
				$set_projectYears = '';
				$set_info_student = '';
				if(!empty($get_projectYears)){
					$set_projectYears = $get_projectYears[0]['ProjectYear']['name'];
					$set_info_student = 'Xem thông tin: <a href="'.$this->webroot.'project/view'.$get_student_registry[0]['Project']['id'].'"><b>'.$name_student.'</b></a>';
				}
				$this->Session->setFlash(__($set_projectYears.' sinh viên đã đăng ký.'.$set_info_student,true));
				$this->redirect(array('action'=>'index'));
			}
			
			//Thông tin để đăng ký
			$security_code = $this->data['Project']['security_code'] = $this->check_security_code($isStudent,$this->creat_security_code($isStudent));
			if ($this->Project->save($this->data)) {
				$results_project_student = $this->requestAction("/project_students/add_project/".$security_code);
				if($results_project_student['creat_ok'] == true){
					$this->Session->setFlash(__('Đề tài đã được đăng ký thành công', true));
					$this->redirect(array('action' => 'view',$results_project_student['Project']['id']));
				}
				else{
					//xóa nếu đăng ký không thành công
					$get_project_by_security_code = $this->ProjectStudent->Project->find('all',array(
					'conditions'=>array(
						'Project.security_code'=>$security_code),
					'fields' => array(
						'Project.id',
						'Project.project_year_id',
						'Project.project_category_id',
						'Project.user_id',
						'Project.name',
						'Project.description',
						'Project.security_code',
						'Project.isStudent',
						'Project.active',
						'Project.isreported',
						'Project.created',
						'Project.modified')
					));
					if(!empty($get_project_by_security_code))
						$this->delete_project($get_project_by_security_code[0]['Project']['id']);
				}
				$this->Session->setFlash(__('Thông tin đề tài chưa được đăng ký. Hãy kiểm tra lại thông tin', true));
				$this->redirect(array('action'=>'index'));
				
			} else {
				$this->Session->setFlash(__('Thông tin đề tài chưa được đăng ký. Hãy kiểm tra lại thông tin', true));
				$this->redirect(array('action'=>'index'));
			}
		}
		$projectCategories = $this->Project->ProjectCategory->find('list');
		$projectYears = $this->Project->ProjectYear->find('list',array('conditions'=>array('ProjectYear.active'=>'1')));
		$users = $this->Project->User->find('list',array('conditions'=>array('User.group_id'=>'2')));
		$this->set(compact('projectYears', 'users','projectCategories'));
		//Nếu là giáo vụ khoa đăng nhập và đăng ký cho sinh viên
		if($_SESSION['Auth']['User']['group_id']=='3')
			$this->set('student',$this->Project->User->find('list',array('conditions'=>array('User.group_id'=>'1'))));
	}
	/*
	* Tạo secury_code
	*/
	function creat_security_code($id_user = null){
		$get_user = $this->Project->User->find('all',array('conditions'=>array('User.id'=>$id_user)));
		$str_code ='';
		if($id_user == null)
			$str_code = mt_rand(10000000, 99999999);
		else
			if(!empty($get_user))
				$str_code = $get_user[0]['User']['username'];
			else
				$str_code = mt_rand(10000000, 99999999);
		$str_tmp = mt_rand(100000, 999999);
		$str_code .= '-'.$str_tmp;
		return $str_code;
	}
	/*
	* Kiểm tra security_code
	*/
	function check_security_code($id_user = null,$security_code = null){
		$i = 1;
		while($i<100){
			$get_security_code = $this->Project->find('all',array('conditions'=>array('Project.security_code'=>$security_code)));
			if(count($get_security_code)>0){
				//Đã tồn tại 1 secirity_code 
				//Tạo 1 secirity_code để kiểm tra
				$security_code = $this->creat_security_code($id_user);
			}
			else{
				return $security_code; //Đây là securitu_code duy nhất 
			}
		}
	}
	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid project', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->Project->save($this->data)) {
				$this->Session->setFlash(__('The project has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The project could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Project->read(null, $id);
		}
		$projectYears = $this->Project->ProjectYear->find('list');
		$users = $this->Project->User->find('list');
		$projectCategories = $this->Project->ProjectCategory->find('list');
		$this->set(compact('projectYears', 'users','projectCategories'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for project', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Project->delete($id)) {
			$this->Session->setFlash(__('Project deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Project was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
	
	//Xóa nếu đăng ký không thành công
	function delete_project($id = null) {
		if (!$id) {
			return false;
		}
		if ($this->Project->delete($id)) {
			return true;
		}
		return false;
	}
}
?>